|
In computational number theory and computational algebra, Pollard's kangaroo algorithm (aka Pollard's lambda algorithm, see Naming below) is an algorithm for solving the discrete logarithm problem. The algorithm was introduced in 1978 by the number theorist J. M. Pollard, in the same paper 〔J. Pollard, ''Monte Carlo methods for index computation mod p'', Mathematics of Computation, Volume 32, 1978〕 as his better-known ρ algorithm for solving the same problem. Although Pollard described the application of his algorithm to the discrete logarithm problem in the multiplicative group of units modulo a prime ''p'', it is in fact a generic discrete logarithm algorithm—it will work in any finite cyclic group. ==The algorithm== Suppose is a finite cyclic group of order which is generated by the element , and we seek to find the discrete logarithm of the element to the base . In other words, we seek such that . The lambda algorithm allows us to search for in some subset . We may search the entire range of possible logarithms by setting and , although in this case Pollard's rho algorithm is more efficient. We proceed as follows: 1. Choose a set of integers and define a pseudorandom map . 2. Choose an integer and compute a sequence of group elements according to: * * 3. Compute :. Observe that: : 4. Begin computing a second sequence of group elements according to: * * and a corresponding sequence of integers according to: :. Observe that: : 5. Stop computing terms of and when either of the following conditions are met: :A) for some . If the sequences and "collide" in this manner, then we have: :: :and so we are done. :B) . If this occurs, then the algorithm has failed to find . Subsequent attempts can be made by changing the choice of and/or . 抄文引用元・出典: フリー百科事典『 ウィキペディア(Wikipedia)』 ■ウィキペディアで「Pollard's kangaroo algorithm」の詳細全文を読む スポンサード リンク
|